package com.xw.bo.ks.aspect;

import com.xw.bo.ks.controller.BaseController;
import com.xw.bo.ks.entity.base.HeadData;
import com.xw.bo.ks.entity.enums.ExceptionEnum;
import com.xw.bo.ks.entity.exception.BoException;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * 有权限控制的
 *
 * @author： XW -> ~
 * @create： 2023/11/16 15:10
 */
@Aspect
@Component
public class AuthAspect {

    /**
     * 切入点表达式
     */
    @Pointcut("execution(* com.shang.bo.ks.controller.auth.*Controller.*(..))")
    public void authPointCut() {
    }

    /**
     * 前置通知
     */
    @Before("authPointCut()")
    public void before() {
        HeadData headData = BaseController.headDataLocal.get();
        if (headData == null) {
            throw new BoException(ExceptionEnum.NO_AUTH_ERROR);
        }
        if (StringUtils.isEmpty(headData.getRequestId())) {
            throw new BoException(ExceptionEnum.NO_AUTH_ERROR);
        }
    }

    /**
     * 后置通知
     */
    @After("authPointCut()")
    public void after() {
    }

}
